home *** CD-ROM | disk | FTP | other *** search
- head 1.4;
- branch ;
- access ;
- symbols ;
- locks ; strict;
- comment @@;
-
-
- 1.4
- date 90.09.24.14.38.57; author kupfer; state Exp;
- branches ;
- next 1.3;
-
- 1.3
- date 89.10.24.08.58.43; author ouster; state Exp;
- branches ;
- next 1.2;
-
- 1.2
- date 89.01.04.10.13.29; author ouster; state Exp;
- branches ;
- next 1.1;
-
- 1.1
- date 89.01.04.10.13.03; author ouster; state Exp;
- branches ;
- next ;
-
-
- desc
- @@
-
-
- 1.4
- log
- @Document vsnprintf.
- @
- text
- @.\" @@(#)printf.3 6.5 (Berkeley) 6/5/88
- .\"
- .\" $Header$
- .TH PRINTF 3S "24 September 1990"
- .AT 3
- .SH NAME
- printf, fprintf, sprintf, vprintf, vfprintf, vsprintf, vsnprintf \- formatted output conversion
- .SH SYNOPSIS
- .B #include <stdio.h>
- .PP
- .B printf(format
- .RB [ ,
- arg ] ...
- .B )
- .br
- .B char *format;
- .PP
- .B fprintf(stream, format
- .RB [ ,
- arg ] ...
- .B )
- .br
- .SM
- .B FILE
- .B *stream;
- .br
- .B char *format;
- .PP
- .B char *sprintf(s, format
- .RB [ ,
- arg ] ...
- .B )
- .br
- .B char *s, *format;
- .PP
- .B #include <varargs.h>
- .br
- .B vprintf(format, args)
- .br
- .B char *format;
- .br
- .B va_list args;
- .PP
- .B vfprintf(stream, format, args)
- .br
- .B FILE *stream;
- .br
- .B char *format;
- .br
- .B va_list args;
- .PP
- .B char *vsprintf(s, format, args)
- .br
- .B char *s, *format;
- .br
- .B va_list args;
- .PP
- .B char *vsnprintf(s, nBytes, format, args)
- .br
- .B char *s;
- .br
- .B int nBytes;
- .br
- .B char *format;
- .br
- .B va_list args;
- .SH DESCRIPTION
- .I Printf
- places output on the standard output stream
- .BR stdout .
- .I Fprintf
- places output on the named output
- .IR stream .
- .I Sprintf
- places `output' in the string
- .IR s ,
- followed by the character `\\0'.
- Alternate forms, in which the arguments have already been
- captured using the variable-length argument facilities of
- .IR varargs (3),
- are available under the names
- .IR vprintf ,
- .IR vfprintf ,
- .IR vsprintf ,
- and
- .IR vsnprintf .
- .RI ( Vsnprintf
- is like
- .IR vsprintf ,
- except that it takes an additional argument specifying the size of the
- character buffer
- .IR s .
- It is included for compatibility with the Carnegie Mellon CS library.)
- .PP
- Each of these functions converts, formats, and prints the arguments
- that come after the
- .I format
- argument.
- The
- .I format
- argument controls this conversion process.
- It is a character string which contains two types of objects:
- plain characters, which are simply copied to the output stream,
- and conversion specifications, each of which causes conversion and printing
- of the next successive
- .IR arg .
- .PP
- Each conversion specification is introduced by the character
- .BR % .
- The remainder of the conversion specification includes
- in the following order
- .TP
- .B \(bu
- Zero or more of the following flags:
- .RS
- .TP
- .B \(bu
- a `#' character
- specifying that the value should be converted to an ``alternate form''.
- For
- .BR c ,
- .BR d ,
- .BR s ,
- and
- .BR u ,
- conversions, this option has no effect. For
- .B o
- conversions, the precision of the number is increased to force the first
- character of the output string to a zero. For
- .BR x ( X )
- conversion, a non-zero result has the string
- .BR 0x ( 0X )
- prepended to it. For
- .BR e ,
- .BR E ,
- .BR f ,
- .BR g ,
- and
- .BR G ,
- conversions, the result will always contain a decimal point, even if no
- digits follow the point (normally, a decimal point only appears in the
- results of those conversions if a digit follows the decimal point). For
- .B g
- and
- .B G
- conversions, trailing zeros are not removed from the result as they
- would otherwise be;
- .TP
- .B \(bu
- a minus sign `\-' which specifies
- .I "left adjustment"
- of the converted value in the indicated field;
- .TP
- .B \(bu
- a `+' character specifying that there should always be
- a sign placed before the number when using signed conversions;
- .TP
- .B \(bu
- a space specifying that a blank should be left before a positive number
- during a signed conversion. A `+' overrides a space if both are used;
- .TP
- .B \(bu
- a zero `0' character indicating that zero-padding should be used
- rather than blank-padding. A `\-' overrides a `0' if both are used;
- .RE
- .TP
- .B \(bu
- an optional digit string specifying a
- .I "field width;"
- if the converted value has fewer characters than the field width
- it will be blank-padded on the left (or right,
- if the left-adjustment indicator has been given) to make up the field width
- (note that a leading zero is a flag,
- but an embedded zero is part of a field width);
- .TP
- .B \(bu
- an optional period, followed by
- an optional digit string giving a
- .I precision
- which specifies the number of digits to appear after the
- decimal point, for e- and f-conversion, or the maximum number of characters
- to be printed from a string; if the digit string is missing,
- the precision is treated as zero;
- .TP
- .B \(bu
- the character
- .B l
- specifying that a following
- .BR d ,
- .BR i ,
- .BR o ,
- .BR x ,
- or
- .B u
- corresponds to a long integer
- .IR arg ,
- or that a following
- .B n
- corresponds to a pointer to a long integer
- .IR arg ;
- .TP
- .B \(bu
- the character
- .B h
- specifying that a following
- .BR d ,
- .BR i ,
- .BR o ,
- .BR x ,
- or
- .B u
- corresponds to a short integer
- .IR arg ,
- or that a following
- .B n
- corresponds to a pointer to a short integer
- .IR arg ;
- .TP
- .B \(bu
- a character which indicates the type of
- conversion to be applied.
- .PP
- A field width or precision may be `*' instead of a digit string.
- In this case an integer
- .I arg
- supplies
- the field width or precision.
- .PP
- The conversion characters
- and their meanings are
- .TP
- .B dox
- The integer
- .I arg
- is converted to signed decimal, unsigned octal, or
- unsigned hexadecimal notation respectively.
- .TP
- .B i
- An alias for `d'.
- .TP
- .B f
- The float or double
- .I arg
- is converted to decimal notation
- in the style `[\fB\-\fR]ddd.ddd'
- where the number of d's after the decimal point
- is equal to the precision specification
- for the argument.
- If the precision
- is missing,
- 6 digits are given;
- if the precision is explicitly 0, no digits and
- no decimal point are printed.
- .TP
- .B eE
- The float or double
- .I arg
- is converted in the style
- `[\fB\-\fR]d\fB.\fRddd\fBe\fR\(+-dd'
- where there is one digit before the decimal point and
- the number after is equal to the
- precision specification for the argument;
- when the precision is missing,
- 6 digits are produced.
- An uppercase E is used for `E' conversion.
- .TP
- .B gG
- The float or double
- .I arg
- is printed in style
- .B f
- or in style
- .B e
- .RB ( E )
- whichever gives full precision in minimum space.
- .TP
- .B c
- The character
- .I arg
- is printed.
- .TP
- .B s
- .I Arg
- is taken to be a string (character pointer)
- and characters from the string are printed until
- a null character or until
- the number of characters indicated by the precision
- specification is reached;
- however if the precision is 0 or missing
- all characters up to a null are printed.
- .TP
- .B u
- The unsigned integer
- .I arg
- is converted to decimal
- and printed (the result will be in the
- range 0 through MAXUINT, where MAXUINT equals 4294967295 on a VAX-11
- and 65535 on a PDP-11).
- .TP
- .B n
- .I Arg
- is taken to be a pointer to an integer (possibly
- .B short
- or
- .BR long )
- through which is stored the number of characters written
- to the output stream (or string) so far by this call to
- .B printf
- (or
- .BR fprintf ,
- etc.).
- .TP
- .B p
- .I Arg
- is taken to be a pointer to
- .BR void ;
- it is printed in style
- .BR x .
- .TP
- .B %
- Print a `%'; no argument is converted.
- .PP
- In no case does a non-existent or small field width
- cause truncation of a field;
- padding takes place only if the specified field
- width exceeds the actual width.
- Characters generated by
- .I printf
- are printed as by
- .IR putc (3S).
- .PP
- .SH "RETURN VALUE"
- Except for \fIsprintf\fR, \fIvsprintf\fR, and \fIvsnprintf\fR,
- the functions all return
- the number of characters printed, or -1 if an error occurred.
- \fISprintf\fR, \fIvsprintf\fR, and \fIvsnprintf\fR return
- a pointer to the result string (the first argument).
- .SH EXAMPLES
- .br
- To print a date and time in the form `Sunday, July 3, 10:02',
- where
- .I weekday
- and
- .I month
- are pointers to null-terminated strings:
- .RS
- .HP
- .nh
- printf("%s, %s %d, %02d:%02d", weekday, month, day, hour, min);
- .RE
- .hy
- .PP
- To print
- .if n pi
- .if t \(*p
- to 5 decimals:
- .IP
- printf("pi = %.5f", 4*atan(1.0));
- .SH "SEE ALSO"
- putc(3S), scanf(3S)
- .SH BUGS
- The functions still supports \fI%D\fP, \fI%O\fP, and \fI%U\fP. Do not
- use these formats, as they will be disappearing soon.
- .PP
- For ANSI compatibility, the
- .I sprintf
- family should return the number of characters printed, rather than the
- buffer string.
- @
-
-
- 1.3
- log
- @Fix documentation for sprintf and vsprintf to correspond
- to reality.
- @
- text
- @d3 2
- a4 1
- .TH PRINTF 3S "October 22, 1987"
- d7 1
- a7 1
- printf, fprintf, sprintf, vprintf, vfprintf, vsprintf \- formatted output conversion
- d57 10
- d84 1
- d86 17
- a102 5
- .IR vsprintf .
- .PP
- Each of these functions converts, formats, and prints its arguments after
- the first under control of the first argument.
- The first argument is a character string which contains two types of objects:
- d106 1
- a106 2
- .I arg
- .IR printf .
- d333 2
- a334 1
- Except for \fIsprintf\fR and \fIvsprintf\fR, the functions all return
- d336 2
- a337 2
- \fISprintf\fR and \fIvsprintf\fR return a pointer to the result string
- (the first argument).
- d364 5
- @
-
-
- 1.2
- log
- @Added "v" forms to NAME section.
- @
- text
- @d28 1
- a28 1
- .B sprintf(s, format
- d51 1
- a51 1
- .B vsprintf(s, format, args)
- d310 1
- a310 1
- The functions all return
- d312 2
- @
-
-
- 1.1
- log
- @Initial revision
- @
- text
- @d6 1
- a6 1
- printf, fprintf, sprintf \- formatted output conversion
- @
-